package com.zhao.exception;

import com.zhao.bean.R;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.bind.annotation.ValueConstants;

import java.sql.SQLIntegrityConstraintViolationException;

/*
    这是整个项目的全局异常处理器。
        1. 定义类，类上打注解 @RestControllerAdvice ，
            看成是可以对所有的RestController进行增强（其实就是给他们处理异常）

        2. 定义方法，方法上打注解 @ExceptionHandler ，
            处理什么异常，就在注解里面写上异常的字节码

        3. 如果希望得到这个异常的详细信息，就在方法里面定义出来这个异常的参数
 */
@RestControllerAdvice
public class GlobalExceptionHandler {
    /**
     * 处理数据库约束异常
     * @return
     */
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R handleExecption(SQLIntegrityConstraintViolationException e){
        e.printStackTrace();
       //获取异常信息
        String s = e.getMessage();
        //判断异常是否是数据重复的异常
        if(s.contains("Duplicate entry")){
        String val=s.split(" ")[2];
            return R.error(val+"已存在");
        }
        return R.error("未知错误！");
    }

}
